package com.mdb.open.trade.mapper.product;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mdb.open.trade.domain.ko.product.CustomerLimitKo;
import com.mdb.open.trade.domain.ko.product.LimitUserProdKo;
import com.mdb.open.trade.domain.ko.product.MerchantLimitKo;
import com.mdb.open.trade.domain.ko.product.QueryMerchantProdLimitPageKo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;

import java.math.BigDecimal;

/**
 * @author liuyi
 * @date 2019/07/26
 **/
@Component
public interface LimitExMapper {

    /**
     * 商户额度详情
     */
    MerchantLimitKo getMerchantLimitDetail(@Param("customerCode") String customerCode, @Param("prodCode") String prodCode, @Param("merchantNo") String merchantNo);

    /**
     * 客户额度详情
     */
    CustomerLimitKo getCustomerLimitDetail(@Param("customerCode") String customerCode, @Param("prodCode") String prodCode);

    /**
     * 商户额度列表
     */
    IPage<LimitUserProdKo> queryMerchantProdLimitPageList(Page page, @Param("dto") QueryMerchantProdLimitPageKo ko);

    //额度冻结操作
    int limitUserProdFroze(@Param("limitNo") String limitNo, @Param("bal") BigDecimal bal);

    int limitInfoFroze(@Param("limitNo") String limitNo, @Param("bal") BigDecimal bal);

    //额度解冻
    int limitUserProdUnFroze(@Param("limitNo") String limitNo, @Param("bal") BigDecimal bal);

    int limitInfoUnFroze(@Param("limitNo") String limitNo, @Param("bal") BigDecimal bal);

    //额度占用
    int limitUserProdUse(@Param("limitNo") String limitNo, @Param("bal") BigDecimal bal);

    int limitInfoUse(@Param("limitNo") String limitNo, @Param("bal") BigDecimal bal);

    //额度恢复
    int limitUserProdRecover(@Param("limitNo") String limitNo, @Param("bal") BigDecimal bal);

    int limitInfoRecover(@Param("limitNo") String limitNo, @Param("bal") BigDecimal bal);

    int updateLimitUseRecBal(@Param("seqNo") String seqNo, @Param("bal") BigDecimal bal);

    int updateLimitUseRecStatus(@Param("seqNo") String seqNo, @Param("oStatus") String oStatus, @Param("nStatus") String nStatus);

}
